Skip to content

6.2. Platform Install

How do you create the validated local cluster?

Run the staged platform doctor, then use the guarded root task:

mise run doctor:platform
mise run cluster:start

The task creates or resumes cluster local from infra/k3d.yaml, with an integrated registry.localhost:5050, one server and one agent node, a loopback-only Kubernetes API, and no Traefik/service load balancer.

How is kagent installed?

mise run platform:install

The task creates the agentops namespace and applies infra/helmfile.yaml, which pins the stable kagent-crds and kagent charts at 0.9.11. kagent/values.yaml limits controller watching to agentops (RBAC covers only kagent and agentops), gives the controller/database explicit resources, disables demo agents/MCP add-ons, and scales the optional UI to zero. The active chart workloads are the controller and bundled Postgres.

Why install the namespace first?

The slim chart is configured to watch agentops. Creating that namespace before Helm keeps scope and RBAC explicit. The application overlay also declares the namespace so later rendering remains self-contained.

How do you verify the installation?

kubectl -n kagent get pods
kubectl get crd \
  agents.kagent.dev \
  modelconfigs.kagent.dev \
  remotemcpservers.kagent.dev
helmfile -f infra/helmfile.yaml list

Expected: kagent controller and bundled Postgres ready; CRDs established; no demo agent fleet.

How do you remove kagent?

The kagent control plane is cluster-wide. On the shared local cluster, remove the course workloads and keep kagent available for other namespaces. Run this only for a dedicated lab after confirming no other kagent-managed workloads remain:

helmfile -f infra/helmfile.yaml destroy

Remove the course workload with Skaffold first. Helm deletion does not automatically preserve a valid BYO deployment once its controller/CRDs are gone.

What is the install checkpoint?

Confirm the cluster context is k3d-local, nodes are ready, chart versions are exactly 0.9.11, the controller watches agentops, and no UI/demo workload consumes the small lab.